//
//  STSportingTracking.m
//  STBest
//
//  Created by apple on 2017/8/28.
//  Copyright © 2017年 apple. All rights reserved.
//

#import "STSportingTracking.h"
@implementation STSportingTrackingLine

- (double)speed {
    // 另外一种方案
    // 距离 / 时间
    // 两点之间距离 / (两点时间的时间差)
    
    // m/s => 公里 / 小时
    //
    return (self.beginLocation.speed + self.endLocation.speed) / 2 * 3600 / 1000;
}

// 线段距离
- (double)distance {
    return [self.endLocation distanceFromLocation:self.beginLocation] / 1000.0;
}

- (double)duration {
    return self.endLocation.timestamp.timeIntervalSince1970 - self.beginLocation.timestamp.timeIntervalSince1970;
}

@end

@implementation STSportingTracking


- (NSMutableArray<STSportingTrackingLine *> *)lines{
    if(_lines == nil){
        
        _lines = [NSMutableArray array];
    }
    
    return _lines;
}

// 运动速度
- (double)avgSpeed{
    // KVC 写法
    // KVC 里面内部集成两部分关键字可以帮助我们实现更简短的代码，@sum 累加，@avg 平均值，@max等等
    NSNumber *numDistance = [self.lines valueForKeyPath:@"@avg.speed"];
    return [numDistance doubleValue];
}

// 把所有线段都加起来后的距离
- (double)distance {
    // 累加所有线段的长度
    // 如果想性能更高，可以采用每次添加都累加长度
    /*
     double len = 0;
     for (HMSportingTrackingLine *line in self.lines) {
     len += line.distance;
     }
     return len;
     */
    // KVC 写法
    // KVC 里面内部集成两部分关键字可以帮助我们实现更简短的代码，@sum 累加，@avg 平均值，@max等等
    NSNumber *numDistance = [self.lines valueForKeyPath:@"@sum.distance"];
    return [numDistance doubleValue];
}

- (double)duration {
    NSNumber *num = [self.lines valueForKeyPath:@"@sum.duration"];
    return [num doubleValue];
}

// 显示时长的格式
- (NSString *)durationString {
    
    // 直接通过时长计算出，小时，分钟，秒
    // (00:00:00)
    int duration = (int)[self duration];
    
    NSInteger hour = (NSInteger)(duration / 3600.0);
    NSInteger minute = (NSInteger)((duration % 3600) / 60.0);
    NSInteger second = duration % 60;
    
    return [NSString stringWithFormat:@"%02zd:%02zd:%02zd",hour,minute,second];
    
}

@end
